"""
@Author : 合肥一元数智教育科技有限公司
@Date :  2025/3/20 13:36
@Description :  正则表达式的基本使用
什么是正则表达式 ： 特殊的字符串   通过字符串创建了一种字符串规则

"""
import re

str_info = 'Hello 123 world  456'
# print(str_info.upper())
# print(str_info.lower())

# 将字符串中的数据进行提取  123  456  python 字符串数据类型中没有对应的函数  编写正则  re
result = re.findall(r'\d+', str_info)
print(result)

"""
  如何编写正则表达式
  1. .
  2. []
  3. {}  重复字符  
  4. *
  5. +
  6. ?   取消贪婪模式
  7. ^   取反   开始边界
  8. $   结束边界
"""
#  .  通配符 表示除换行符之外的任何一个字符
str_info = 'apple ape agree age amaze animate advertise a\ne'
# a.e  表示目标字符是a和e之间有一个字符的字符串
"""
result = re.findall(r'a.e', str_info)
result = re.findall(r'a..e', str_info)
result = re.findall(r'a...e', str_info)
print(result)
"""

# []  字符集  出现中括号中的任意一个字符
str_info = 'apple ape agree age amaze animate advertise a\ne  a@e a$e a%e a0e a1e'
result = re.findall(r'a.e', str_info)
print(result)
# 提取  ape  age
# result = re.findall(r'a[pgtz]e', str_info)
# result = re.findall(r'a[a-z]e', str_info)
# result = re.findall(r'a[01]e', str_info)
# result = re.findall(r'a[0-9]e', str_info)
# result = re.findall(r'a[@$%\n]e', str_info)
# [^a-zA-Z0-9]  除罗列除的字符之外的任意一个字符
result = re.findall(r'a[^a-zA-Z0-9]e', str_info)
print(result)

"""
# {}    重复字符  重复符号左边的字符重复出现的次数 
  {2}   重复2次
  {1,2} 出现的次数 至少一次  最多两次

"""

str_info = 'aeeee apple aPe agree age amaze animate advertise a\ne apge  a@e a$e a%e a0e a2e'
# result = re.findall(r'a.e', str_info)
# result = re.findall(r'a.{2}e', str_info)
# 贪婪模式 默认以最大值优先原则
result = re.findall(r'a.{1,2}e', str_info)
print(result)
# 取消贪婪模式  ?   以最小值优先
result = re.findall(r'a.{1,2}?e', str_info)
# 2- 无穷大
result = re.findall(r'a.{2,}e', str_info)
result = re.findall(r'a.{2,}?e', str_info)
print(result)

#  *  0次 或多次
result = re.findall(r'a.*e', str_info)
print(result)
result = re.findall(r'a.*?e', str_info)
print(result)

# +   1次  或多次
result = re.findall(r'a.+e', str_info)
print(result)
result = re.findall(r'a.+?e', str_info)
print(result)

# ?  0次或一次
str_url = 'this is a url path https://www.baidu.com http://www.taobao.com'
result = re.findall(r'https?://www\.[a-z0-9]+\.com', str_url)
print(result)


str_info = 'apple ape agree age amaze animate advertise '
result = re.findall(r'\ba.e\b', str_info)
print(result)

# ^   $
path = 'blog/2005/12'

reg = '^blog/[0-9]{4}/[0-9]{1,2}$'

ret = re.findall(reg, path)
print(ret)

